package com.dragon.modules.yuegou.service.wallet;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dragon.common.web.PageRequest;
import com.dragon.modules.yuegou.entity.wallet.CardGrantEntity;
import com.dragon.modules.yuegou.model.system.Document;
import com.dragon.modules.yuegou.model.wallet.CardGrant;
import com.dragon.modules.yuegou.model.wallet.MemberCardGrant;
import com.dragon.modules.yuegou.query.wallet.CardGetQuery;
import com.dragon.modules.yuegou.query.wallet.CardGrantListQuery;
/**
 * 悦卡发放记录（企业向会员发放悦卡） 服务接口
 *
 * @author pbuilder generated
 * @date 2019-03-05 11:27:22
 * @version 2.0
 */
public interface CardGrantService extends IService<CardGrantEntity> {

    /**
     * 查询悦卡发放列表
     * @param page
     * @param query
     * @return
     */
    IPage<CardGrant> searchGrantList(IPage<CardGrant> page, CardGrantListQuery query);

    /**
     * 悦卡发放详情
     * @param id
     * @return
     */
    CardGrant detail(String id);

    /**
     * 悦卡发放审核通过
     * @param cardGrant
     * @param checkBy
     */
    void checkPass(CardGrant cardGrant, String checkBy);

    /**
     * 悦卡发放审核驳回
     * @param cardGrant
     * @param checkBy
     */
    void checkUnpass(CardGrant cardGrant, String checkBy);

    /**
     * 悦卡发放
     * @param cardGrant
     */
    void grantCard(CardGrant cardGrant);

    /**
     * 批量发放悦卡
     * @param fileId
     */
    void batchGrantCard(String fileId);

    /**
     * 导出发放悦卡记录
     * @param query
     */
    Document exportGrantCard(CardGrantListQuery query);

    /**
     * 查询悦卡获取记录
     * @param page
     * @param query
     * @return
     */
    IPage<MemberCardGrant> searchGetRecord(PageRequest page, CardGetQuery query);

    /**
     * 导出获取悦卡记录
     * @param query
     */
    Document exportGetRecord(CardGetQuery query);

    /**
     * 下载模板
     */
    Document getTemplate();

    /**
     * 退卡
     * @param id
     */
    void refundCard(String id,String reason);

}